Skip to content

Conversation

@transphorm
Copy link
Member

@transphorm transphorm commented Jan 7, 2026

Description

A brief description of the changes, what and how is being changed.

Tested

Explain how the change has been tested (for example by manual testing, unit tests etc) or why it's not necessary (for example version bump).

How to QA

How can the change be tested in a repeatable manner?

Summary by CodeRabbit

  • Chores
    • Updated react-native-edge-to-edge dependency to version 1.7.0
    • Enhanced Metro resolver configuration to support additional optional peer dependencies

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 7, 2026

📝 Walkthrough

Walkthrough

This PR adds 'react-native-b4a' to Metro's optional peer dependencies list for empty-module resolution, and bumps the react-native-edge-to-edge dependency from version ^1.6.2 to ^1.7.0, maintaining compatibility with the updated package.

Changes

Cohort / File(s) Summary
Metro Configuration
app/metro.config.cjs
Added 'react-native-b4a' to optional peer dependencies in the Metro resolver, enabling early empty-module return for this package alongside existing optional peers.
Dependency Updates
app/package.json
Bumped react-native-edge-to-edge from ^1.6.2 to ^1.7.0. No script or other dependency changes.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~5 minutes

Possibly related PRs

Suggested labels

codex

Poem

📦 A dependency whispers, "include me light,"
Empty modules shimmer in Metro's sight,
Edge-to-edge updates take their flight,
React Native stays nimble and tight! 🚀

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description check ⚠️ Warning The pull request description contains only the template placeholders with no actual content filled in; all required sections lack concrete information about what was changed and how testing was performed. Fill in the Description, Tested, and How to QA sections with specific details about the package update, testing approach, and verification steps.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title directly references the main change: updating the react-native-edge-to-edge package, which aligns with the dependency version bump shown in the raw summary.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6c420c2 and 63d8382.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (2)
  • app/metro.config.cjs
  • app/package.json
🧰 Additional context used
📓 Path-based instructions (1)
app/{package.json,app/app.json}

📄 CodeRabbit inference engine (app/AGENTS.md)

Bump version in package.json and app.json before deployment

Files:

  • app/package.json
🧠 Learnings (20)
📓 Common learnings
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-12-25T19:19:35.354Z
Learning: Applies to packages/mobile-sdk-alpha/**/*.{ts,tsx} : Verify cross-platform compatibility for both React Native and Web environments
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-12-25T19:19:04.954Z
Learning: Document complex native module changes in PRs
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-12-25T19:19:35.354Z
Learning: Applies to packages/mobile-sdk-alpha/**/*.{ts,tsx} : Before creating a PR, ensure `yarn build` succeeds (package builds correctly)
Learnt from: aaronmgdr
Repo: selfxyz/self PR: 1448
File: packages/mobile-sdk-demo/package.json:45-45
Timestamp: 2025-12-01T14:30:34.749Z
Learning: In selfxyz/self, react-native-blur-effect1.1.3 is acceptable to use with React Native 0.76.9 despite its declared peer dependency of react-native@^0.66.4, as the package functionality works correctly across versions.
Learnt from: transphorm
Repo: selfxyz/self PR: 636
File: app/android/app/build.gradle:76-76
Timestamp: 2025-06-30T15:51:11.193Z
Learning: For React Native 0.80, the correct JSC version is `io.github.react-native-community:jsc-android:2026004.+`. This version was specifically built with Android NDK r23 to align with React Native 0.80's NDK requirements and prevent compatibility issues. The `2026004` version pattern is the official version for RN 0.80, not an outdated pin.
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-11-25T14:06:55.970Z
Learning: Applies to **/*.{ts,tsx,js,jsx} : Implement graceful degradation when native modules fail in React Native.
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-11-25T14:06:55.970Z
Learning: Implement bundle size optimization with tree shaking in React Native applications.
📚 Learning: 2025-11-25T14:06:55.970Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-11-25T14:06:55.970Z
Learning: Applies to **/*.{ts,tsx,js,jsx} : Implement graceful degradation when native modules fail in React Native.

Applied to files:

  • app/metro.config.cjs
📚 Learning: 2025-11-25T14:06:55.970Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-11-25T14:06:55.970Z
Learning: Applies to **/*.{ts,tsx,js,jsx} : Prevent memory leaks in native modules in React Native.

Applied to files:

  • app/metro.config.cjs
📚 Learning: 2025-12-01T14:30:34.749Z
Learnt from: aaronmgdr
Repo: selfxyz/self PR: 1448
File: packages/mobile-sdk-demo/package.json:45-45
Timestamp: 2025-12-01T14:30:34.749Z
Learning: In selfxyz/self, react-native-blur-effect1.1.3 is acceptable to use with React Native 0.76.9 despite its declared peer dependency of react-native@^0.66.4, as the package functionality works correctly across versions.

Applied to files:

  • app/metro.config.cjs
  • app/package.json
📚 Learning: 2025-12-25T19:19:04.954Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-12-25T19:19:04.954Z
Learning: Applies to app/tests/**/*.{ts,tsx,js,jsx} : Do not create nested `require('react-native')` calls in tests - causes OOM in CI

Applied to files:

  • app/metro.config.cjs
📚 Learning: 2025-12-25T19:18:22.033Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/test-memory-optimization.mdc:0-0
Timestamp: 2025-12-25T19:18:22.033Z
Learning: Applies to app/scripts/check-test-requires.cjs : Maintain an automated validation script that scans all test files for nested `require('react')` and `require('react-native')` patterns and reports exact file locations and line numbers before tests run

Applied to files:

  • app/metro.config.cjs
📚 Learning: 2025-12-25T19:19:04.954Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-12-25T19:19:04.954Z
Learning: Applies to app/**/*.test.{ts,tsx,js,jsx} : Avoid nested `require('react')` or `require('react-native')` calls in test files - use ES6 import statements instead

Applied to files:

  • app/metro.config.cjs
📚 Learning: 2025-11-25T14:06:55.970Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-11-25T14:06:55.970Z
Learning: Implement bundle size optimization with tree shaking in React Native applications.

Applied to files:

  • app/metro.config.cjs
📚 Learning: 2025-12-25T19:19:35.354Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-12-25T19:19:35.354Z
Learning: Applies to packages/mobile-sdk-alpha/**/*.{ts,tsx} : Verify cross-platform compatibility for both React Native and Web environments

Applied to files:

  • app/metro.config.cjs
  • app/package.json
📚 Learning: 2025-12-25T19:18:43.224Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-25T19:18:43.224Z
Learning: Applies to {app,packages/mobile-sdk-alpha}/**/*.{test,spec}.{js,ts,jsx,tsx} : Never create nested require('react-native') calls in tests as this causes out-of-memory errors in CI/CD pipelines; use ES6 import statements instead and avoid dynamic require() calls in beforeEach/afterEach hooks

Applied to files:

  • app/metro.config.cjs
📚 Learning: 2025-12-25T19:18:22.033Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/test-memory-optimization.mdc:0-0
Timestamp: 2025-12-25T19:18:22.033Z
Learning: Understand that React Native modules are large and complex; nested require() calls multiply memory usage and trigger module resolution loops, duplicate module instances, and Hermes parser WASM memory issues in test environments

Applied to files:

  • app/metro.config.cjs
📚 Learning: 2025-12-25T19:18:22.033Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/test-memory-optimization.mdc:0-0
Timestamp: 2025-12-25T19:18:22.033Z
Learning: Applies to **/*.test.{ts,tsx,js,jsx} : Never use `require('react-native')` in test files; use ES6 `import` statements instead to avoid nested require() calls that cause out-of-memory errors in CI/CD pipelines

Applied to files:

  • app/metro.config.cjs
📚 Learning: 2025-12-25T19:18:22.033Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/test-memory-optimization.mdc:0-0
Timestamp: 2025-12-25T19:18:22.033Z
Learning: Applies to **/__tests__/**/*.{ts,tsx,js,jsx} : Never use `require('react-native')` in test files; use ES6 `import` statements instead to avoid nested require() calls that cause out-of-memory errors in CI/CD pipelines

Applied to files:

  • app/metro.config.cjs
📚 Learning: 2025-12-25T19:19:35.354Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-12-25T19:19:35.354Z
Learning: Applies to packages/mobile-sdk-alpha/**/*.test.{ts,tsx} : React Native is mocked in `tests/setup.ts` using `vi.mock()` - use imports in test files instead of require()

Applied to files:

  • app/metro.config.cjs
📚 Learning: 2025-12-25T19:19:35.354Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-12-25T19:19:35.354Z
Learning: Applies to packages/mobile-sdk-alpha/**/*.{ts,tsx} : Ensure no breaking changes to public API or document them properly

Applied to files:

  • app/package.json
📚 Learning: 2025-12-25T19:19:04.954Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-12-25T19:19:04.954Z
Learning: Applies to app/{package.json,app/app.json} : Bump version in `package.json` and `app.json` before deployment

Applied to files:

  • app/package.json
📚 Learning: 2025-12-25T19:19:04.954Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-12-25T19:19:04.954Z
Learning: Applies to app/**/*.{ts,tsx,js,jsx} : Use `react-native-dotenv` for environment configuration via `env` import

Applied to files:

  • app/package.json
📚 Learning: 2025-08-23T02:02:02.556Z
Learnt from: transphorm
Repo: selfxyz/self PR: 942
File: app/vite.config.ts:170-0
Timestamp: 2025-08-23T02:02:02.556Z
Learning: In the selfxyz/self React Native app, devTools from '@/navigation/devTools' are intentionally shipped to production builds for testing purposes, not excluded as is typical in most applications.

Applied to files:

  • app/package.json
📚 Learning: 2025-06-30T15:51:11.193Z
Learnt from: transphorm
Repo: selfxyz/self PR: 636
File: app/android/app/build.gradle:76-76
Timestamp: 2025-06-30T15:51:11.193Z
Learning: For React Native 0.80, the correct JSC version is `io.github.react-native-community:jsc-android:2026004.+`. This version was specifically built with Android NDK r23 to align with React Native 0.80's NDK requirements and prevent compatibility issues. The `2026004` version pattern is the official version for RN 0.80, not an outdated pin.

Applied to files:

  • app/package.json
📚 Learning: 2025-06-30T15:27:13.795Z
Learnt from: transphorm
Repo: selfxyz/self PR: 636
File: app/ios/Podfile:14-14
Timestamp: 2025-06-30T15:27:13.795Z
Learning: React Native 0.80 supports iOS 15.1 as the minimum deployment target, not iOS 16.0. This allows for broader device compatibility while still being compatible with the React Native 0.80 upgrade.

Applied to files:

  • app/package.json
⏰ Context from checks skipped due to timeout of 300000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: test
  • GitHub Check: type-check
  • GitHub Check: test-common
  • GitHub Check: e2e-ios
  • GitHub Check: android-build-test
  • GitHub Check: analyze-android
🔇 Additional comments (2)
app/metro.config.cjs (1)

412-412: This change is safe but potentially unnecessary.

Stubbing react-native-b4a in Metro's optional peer dependencies will have no impact on functionality since no code in the app or its dependencies actually imports this package. The empty module return pattern is consistent with other optional peers already in the config.

However, consider removing this entry entirely if no dependency declares react-native-b4a as a peer dependency. There's no evidence this package is needed—it's neither installed, imported, nor declared by any dependency.

app/package.json (1)

151-151: No action needed—app.json is not versioned in this codebase.

The react-native-edge-to-edge update to 1.7.0 is safe: no breaking changes, only adds Material3 Expressive styles support (released Aug 2025). However, app/app.json does not contain a version field—it's a React Native app configuration file with only name and displayName. The coding guideline reference to bumping "app.json" version does not apply here. If an app version bump is required for this release, it should be handled via app/package.json version (currently 2.9.8) per your release strategy, not app.json.

Likely an incorrect or invalid review comment.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@transphorm transphorm merged commit 548779d into dev Jan 7, 2026
24 checks passed
@transphorm transphorm deleted the justin/address-some-pkg-issues branch January 7, 2026 19:06
jcortejoso pushed a commit that referenced this pull request Jan 15, 2026
* update edge to edge for play store req

* address metrojs missing peer dep
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants